
var express = require('express');
var router = express.Router();
var {comment_model,qfuser_model,anno_model,qfuser_model,qfbanji_model,qfxm_model} = require("../utils/model")
var {createToken,checkToken} = require("../utils/token")
var multer = require("multer");
var axios = require("axios")
router.get("/test",(req,res)=>{
  res.json({
    code:200,
    msg:"请求成功",
    result:"Vue 项目接口文件  - test - test "
  })
})


router.post("/register",(req,res)=>{
  var body = req.body 
  qfuser_model.findOne({
    phone:body.phone
  })
  .then(data=>{
    if(data){
      res.json({
        code:401,
        msg:"账号已经被注册",
        data
      })
    }else{
      body.time = new Date();
      body.role = body.role || 1;  // 1 学员  2.班主任  3. 讲师   4. 管理员 
      qfuser_model.insertMany(body)
      .then(result=>{
        res.json({
          code:200,
          msg:"注册成功",
          result
        })
      })
    }
  })
  .catch(err=>{
    res.json({
      code:500,
      msg:"服务器异常",
      err
    })
  })
})

// 登录
router.post("/login",(req,res)=>{
  const body = req.body;
  qfuser_model.findOne({
    $or:[
      { phone:body.account},
      { username:body.account}
    ]
  })  
  .then(result=>{
     if(result){
      if(result.password==body.password){
        const token = createToken({
          phone:result.phone,
          password:result.password
        });
        res.json({
          code:200,
          msg:"登录成功",
          result,
          token
        })
      }else{
        res.json({
          code:401,
          msg:"密码错误",
        })
      }
     }else{
      res.json({
        code:401,
        msg:"账号不存在",
      })
     }
  })
  .catch(err=>{
    console.log(err)
    res.json({
      code:500,
      msg:"服务器异常",
      err
    })
  })
})


// 发送验证码
router.get("/sendCode",(req,res)=>{
  const {phone} = req.query;
  qfuser_model.findOne({
    phone
  })
  .then(data=>{
      console.log(data)
      if(data){
          // 发送验证码 
          axios.get("http://47.104.209.44:3333/captcha/sent",{
            params:{
              phone
            }
          })
          .then(result=>{
            const {data} = result;
            if(data.code==200){
              res.json({
                code:200,
                result:data,
                msg:"验证码发送成功"
              })
            }else{
              res.json({
                code:401,
                result:data,
                msg:"验证码发送失败"
              })
            }
            
          })
      }else{
        res.json({
          code:401,
          msg:"手机号不存在",
        })
      }
  })
  .catch(err=>{
    console.log(err)
    res.json({
      code:500,
      msg:"服务器异常",
      err
    })
  })
})

router.get("/verifyCode",(req,res)=>{
  const {phone,captcha} = req.query;
  qfuser_model.findOne({
    phone
  })
  .then(data=>{
      console.log(data)
      if(data){
          // 发送验证码 
          axios.get("http://47.104.209.44:3333/captcha/verify",{
            params:{
              phone,
              captcha
            }
          })
          .then(result=>{
            const {data} = result;
            if(data.code==200){
              const token = createToken({
                phone
              });
              res.json({
                code:200,
                result:data,
                msg:"登录成功",
                token 
              })
            }else{
              res.json({
                code:401,
                result:data,
                msg:"登录失败"
              })
            }
            
          })
      }else{
        res.json({
          code:401,
          msg:"手机号不存在",
        })
      }
  })
  .catch(err=>{
    console.log(err)
    res.json({
      code:500,
      msg:"服务器异常",
      err
    })
  })
})

// 获取用户信息
router.get('/getuserinfo',(req,res)=>{
  checkToken(req,res,({phone})=>{
     qfuser_model.findOne({
       phone
     })
     .then(result=>{
        res.json({
          code:200,
          msg:"获取用户信息成功",
          result 
        })
     })
     .catch(err=>{
      res.json({
        code:500,
        msg:"服务器异常",
        err
      })
    })
  })
})


// 上传文件
const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, './public/upload')   // 新建upload 
  },
  filename: function (req, file, cb) {
    cb(null, "wh2107_"+new Date().getTime()+"_"+file.originalname); //避免命名冲突 1.jpg = wh2107_12323131312312_1.jpg
  }
})
const upload = multer({ storage: storage }).any()   // 不限文件格式  不限数据 word json 

router.post("/uploadfile",upload,(req,res)=>{
  var files  = req.files;
  var path = files[0].path ;  // 上传后的相对服务器的文件路径 
  checkToken(req,res,({phone})=>{
    res.json({
      code:200,
      msg:"上传成功",
      path
    })
  })
})
router.post("/uploadimg",upload,(req,res)=>{
    var files  = req.files;
    var path = files[0].path ;  // 上传后的相对服务器的文件路径 

    checkToken(req,res,({phone})=>{
       qfuser_model.updateMany({
         phone,
       },{
         $set:{
           avatar:path
         }
       })
       .then(result=>{
          res.json({
            code:200,
            msg:"上传成功",
            result,
            avatar:path
          })
       })
       .catch(err=>{
        res.json({
          code:500,
          msg:"服务器异常",
          err
        })
      })
    })
})



// 修改密码
router.post("/changepass",(req,res)=>{
  var {oldpass,newpass} = req.body;
  checkToken(req,res,({phone})=>{
      qfuser_model.findOne({
        phone,
      })
      .then(data=>{
          if(data.password == oldpass){
              qfuser_model.updateMany({
                phone
              },{
                $set:{
                  password:newpass
                }
              }).then(result=>{
                res.json({
                  code:200,
                  msg:"密码修改成功,请重新登录",
                  result
                })
              })
              
          }else{
            res.json({
              code:401,
              msg:"旧密码不匹配",
            })
          }
      })
      .catch(err=>{
        res.json({
          code:500,
          msg:"服务器异常",
          err
        })
      })
  })
})

// 添加用户
router.post("/adduser",(req,res)=>{
  var body = req.body 
  checkToken(req,res,({phone})=>{
    qfuser_model.findOne({
      phone:body.phone
    })
    .then(data=>{
      if(data){
        res.json({
          code:401,
          msg:"账号已经被注册",
          data
        })
      }else{
        body.time = new Date();
        body.role = body.role    // 注册普通用户
        qfuser_model.insertMany(body)
        .then(result=>{
          res.json({
            code:200,
            msg:"新增用户成功",
            result
          })
        })
      }
    })
    .catch(err=>{
      res.json({
        code:500,
        msg:"服务器异常",
        err
      })
    })
  })
 
})


// 用户列表
router.post("/getuserlist",(req,res)=>{
  var {keyword,role} = req.body; 
  var obj = {}
  console.log(keyword)
  if(keyword){
    obj = {
      $or:[
        {
          username:new RegExp(keyword),
        },
        {
          phone:new RegExp(keyword),
        },
      ]
    }
  }
  if(role){
    obj = {
      role:role 
    }
  }
  if(keyword&&role){
    obj = {
      $or:[
        {
          username:new RegExp(keyword),
        },
        {
          phone:new RegExp(keyword),
        },
      ],
      role:role 
    }
  }
  

  checkToken(req,res,({phone})=>{
    qfuser_model.find(obj,{})
    .sort({
      _id:-1
    })
    .then(result=>{
      res.json({
        code:200,
        msg:"请求成功",
        result 
      })
    })
    .catch(err=>{
      res.json({
        code:500,
        msg:"服务器异常",
        err
      })
    })
  })
})


router.post("/deloneuser",(req,res)=>{
  var body = req.body; 
  checkToken(req,res,({phone})=>{
    qfuser_model.remove({
      ...body
    })
    .then(result=>{
      res.json({
        code:200,
        msg:"删除成功",
        result 
      })
    })
    .catch(err=>{
      res.json({
        code:500,
        msg:"服务器异常",
        err
      })
    })
  })
})


router.post("/updateoneuser",(req,res)=>{
  var {_id,role,username} = req.body; 
  checkToken(req,res,({phone})=>{
    qfuser_model.updateMany({
      _id:_id
    },{
      $set:{
        role:role,
        username
      }
    })
    .then(result=>{
      res.json({
        code:200,
        msg:"修改成功",
        result 
      })
    })
    .catch(err=>{
      res.json({
        code:500,
        msg:"服务器异常",
        err
      })
    })
  })
})


// 添加班级 
router.post("/addbanji",(req,res)=>{
  var body = req.body 
  checkToken(req,res,({phone})=>{
    qfbanji_model.findOne({
      year:body.year,
      index:body.index,
    })
    .then(data=>{
      if(data){
        res.json({
          code:401,
          msg:"班级已经被添加,请勿重复操作",
          data
        })
      }else{
        body.time = new Date();
        qfbanji_model.insertMany(body)
        .then(result=>{
          res.json({
            code:200,
            msg:"新增成功",
            result
          })
        })
      }
    })
    .catch(err=>{
      res.json({
        code:500,
        msg:"服务器异常",
        err
      })
    })
  })
})


router.post("/getbanjilist",(req,res)=>{
  var body = req.body; 

  checkToken(req,res,({phone})=>{
    qfbanji_model.find(body,{})
    .sort({
      _id:-1
    })
    .then(result=>{
      res.json({
        code:200,
        msg:"请求成功",
        result 
      })
    })
    .catch(err=>{
      res.json({
        code:500,
        msg:"服务器异常",
        err
      })
    })
  })
})


router.post("/delonebanji",(req,res)=>{
  var body = req.body; 
  checkToken(req,res,({phone})=>{
    qfbanji_model.remove({
      ...body
    })
    .then(result=>{
      res.json({
        code:200,
        msg:"删除成功",
        result 
      })
    })
    .catch(err=>{
      res.json({
        code:500,
        msg:"服务器异常",
        err
      })
    })
  })
})

// 设置学员的班级 
router.post("/updateuserbanji",(req,res)=>{
  const {banji} =req.body 
  checkToken(req,res,({phone})=>{
    qfuser_model.updateMany({
      phone
    },{
      $set:{
        banji
      }
    })
    .then(result=>{
      res.json({
        code:200,
        msg:"修改成功",
        result 
      })
    })
    .catch(err=>{
      res.json({
        code:500,
        msg:"服务器异常",
        err
      })
    })
  })
})


// 提交项目
router.post("/addxiangmu",(req,res)=>{
  var body = req.body 
  checkToken(req,res,({phone})=>{
    body.time = new Date();
    qfxm_model.insertMany(body)
    .then(result=>{
      res.json({
        code:200,
        msg:"新增成功",
        result
      })
    })
    .catch(err=>{
      res.json({
        code:500,
        msg:"服务器异常",
        err
      })
    })
  })
})
module.exports = router